function U=sglph1(nu,td,f,B,ph)
// U=sglph(nu,td,f,B,ph), отличается от U=sgl(nu,td,f,B) введением начальной фазы ph. 
// Вычисление реализации сигнала со средне-квадратическим  
// значением, равным 1, по заданным значениям:
// nu - число выборочных значений в реализации,
// td - 1/тактовая частота;
// f - несущая частота; если несущая в пределах выборки изменяется, то f -
// вектор с размерностью nu
// В - полоса спектра, если В=0, то просто несущая
// ph - фаза в радианах
exec('std.sci');

l=length(f);
if (l>1 & l<nu),
    error('должно быть: length(f)=1 или length(f)=nu');
end; 

if l==1,
    k=1:nu;
    ftd=2*%pi*f*td;
//     x=cos(ftd*k);
     x=exp(%i*ftd*k);
else
    y=zeros(1,nu);
    y(1)=2*%pi*f(1)*td;
    ftd=(2*%pi*td)*f;
    for k1=2:nu,
        y(k1)=y(k1-1)+ftd(k1);
    end;
    x=cos(y+ph);
end;
        
if B>0
    n=pmodulo(round(nu*td*B/2),nu); 
//    n = round(nu*td*B/2)-fix(round(nu*td*B/2)./nu).*nu;
    e=grand(1,nu,'nor',0,1);
    ef=fft(e);       
    ef1=zeros(1,nu);
    ef1(1:n)=ef(1:n);
    ef1(nu-n+1:nu)=ef(nu-n+1:nu);
    ez=ifft(ef1);
    s=std(ez);
//     u=real(ez)/s;
    u=(ez)/s;

    U=u.*x;
//     U=u.*exp(i*(y+ph));
else
    U=x;
end

S=std(U);

if S~=0
    U=U/S;
end

endfunction
 
